<?php

/**
 * A set contains objects without guaranteed order and without duplicates.
 * 
 * All ICSet implementations provided by Core provide best-effort constant- or logaritmic-time implementations of all methods (usually through careful use of PHP hash arrays).
 */
interface ICSet {
	/** Adds a value to the set. Does nothing if the object is already in the set. Returns $this. */
	function add($value);
	/** Removes a value from the set. Returns $this. */
	function remove($value);
	/** Returns true if the value is contained in the set, false otherwise. */
	function contains($value);
	/** Returns all values in the set. */
	function allItems();
}

?>